NLB で同一クライアントのリクエストが特定ターゲットに偏る事象を回避するには
困っていた内容
NLB でクライアントからの HTTP リクエストを複数ターゲットに分散しています。
ターゲット側の状況を確認したところ、同一クライアントからのリクエストが常に特定ターゲットにルーティングされていました。
Cookie は使用していません。偏りを解消する方法を教えてください。
どう対応すればいいの?
ターゲットグループで属性の「維持設定」を確認してください。
NLB のスティッキーセッション(維持設定)を有効にすると、送信元の IP アドレスベースでリクエストを振り分けます。そのため維持設定が有効になっていると、同一クライアントからのリクエストは、同じターゲットにルーティングされます。
従って、ターゲットグループで属性の「維持設定」が有効になっている場合は、無効にすることを検討してください。
「維持設定」が無効の場合は次のトラブルシューティングもお試しください。
なお、ALB ではリクエストを Cookie ベースで振り分けます。
参考資料
スティッキーセッションを使用すると、接続とフローの分散が不均一になり、ターゲットの可用性に影響する場合があります。たとえば、同じ NAT デバイスの背後にあるすべてのクライアントの送信元 IP アドレスは同じです。したがって、これらのクライアントからのすべてのトラフィックは、同じターゲットにルーティングされます。
スティッキー セッション (stickiness)
同じクライアントからのリクエストを全て同じEC2インスタンスに送信する仕組み
• ALBではCookieベースで制御する。デフォルトで無効
• NLBでは送信元IPアドレスベースで制御する。こちらもデフォルトで無効。NAT経由だったり、送信元IPが限定されている時はうまく分散されなくなるので注意
ロードバランサーは、プロトコル、送信元 IP アドレス、送信元ポート、宛先 IP アドレス、宛先ポート、および TCP シーケンス番号に基づいて、フローハッシュアルゴリズムを使用してターゲットを選択します。